Amazon Q BusinessからSalesforceに接続してデータソースとして利用する
Amazon Q Businessは、企業向けに設計されたAIアシスタントサービスで、以下のような機能を提供します。
- 自然言語による対話
- 多様なデータソース連携
- アプリケーション作成
- セキュリティ機能
- プラグイン連携
- 多様なファイル形式対応
社内の様々な情報源から統合的に情報を取得し、質問に答えることができるようになります。
今回は手始めにSalesforceを接続して、質問に対する答えを確認してみます。
料金体系
サブスクリプション料金、インデックスの料金 での課金があります。
Salesforceに接続するための前提条件
Amazon Q Businessアプリケーションを作成しているものとします。
- indexの作成
- データソースの IAM ロールを作成
- Salesforce Online 認証情報を保存するためのAWS Secrets Manager
Salesforceでは、
- Salesforce への接続に使用するアカウントに関連付けられた Salesforce セキュリティトークン
- OAuth が有効化された Salesforce接続アプリケーション
これらが必要となります。
Salesforceは今回のお試し用にhttps://developer.salesforce.com/signup で Salesforce Online インスタンスを作成しておきます。
接続を作ってみる
index作成
indexは、接続したデータソースからコンテンツを保存し、取得するものです。
Amazon Q Business のコンソールにある左のナビゲーション・メニューから、Data sourcesを選択します、
そのページ内でadd indexをクリックします。
index名、Index provisioningの選択、ユニット数を決めて作成します。
Index provisioningは、Enterprise と Starterから選択しますが、本番環境の場合はEnterprise、その他はStarterにしておくのが無難そうです。
ユニット数はStarterでは1~5、Enterpriseでは1~50まで設定できます。
1ユニットには次が含まれます。
- 1か月あたり 100時間分のコネクタの使用
- 20,000 件のドキュメントまたは 200 MB の抽出されたテキスト (いずれか早く達した方)
Salesforceで接続アプリケーションを作成する
Amazon Q Businessからデータを取得する用途のアプリケーションをSalesforce上に作成します。
Salesforce Onlineのプロファイルメニューから、Salesforce OnlineのURLをコピーします。
これがAmazon QでホストURLとして入力するURLになります。
設定画面のアプリケーション->アプリケーションマネージャーのページから新規接続アプリケーションをクリックします。
接続アプリケーションを作成を選択します。
接続アプリケーション作成画面で、まずは基本情報としてConnect App Name(接続アプリ名)、API Name(API名、Contact Email(連絡先メールアドレス)を入力します。
API (OAuth 設定の有効化)で、設定を有効化し、以下の設定をします。
- コールバックURL:
https://login.salesforce.com/services/oauth2/token
- 選択した OAuth 範囲:フルアクセス
- すべてのトークンを調査:チェックをオンにする
その他のオプションはユースケースに応じて選択してください。
今回は最低限の設定で行いました。
保存ボタンを押して作成を終えます。
作成したアプリケーションの編集ページで、
- 許可されているユーザー: 全てのユーザーは自己承認可能
- IP 制限の緩和:IP 制限の緩和
にします。
IDー>OAuth および OpenID Connect 設定 のページで
OAuth ユーザー名パスワードフローを許可、OAuth ユーザーエージェントフローを許可 をオンにします。
接続アプリケーションを管理するページで、作成したアプリケーションを選択し、コンシューマーの詳細の管理 を選択します。
生成ボタンを押して、コンシューマーキーとシークレットを作成し、適用します。
この2つは控えておきましょう。
Salesforceでセキュリティトークンのリセット
Amazon Q BusinessのSalesforce接続では、
OAuth 2.0 with Resource Owner Password Flow を使うのですが、
接続に使用するセキュリティトークンをリセットします。
プロファイルの設定を選択します。
セキュリティトークンのリセット をクリックします。
その後メールでセキュリティトークンが送られてくるので、控えておきます。
Amazon Qからデータソースを作成する
Salesforce Online に接続するために必要な情報は、
- ホスト URL
- ユーザ名
- パスワード
- セキュリティトークン
- クライアント ID
- クライアントシークレット
- Salesforce Online を Amazon Q に接続するために必要な認証URL
です。これらは先ほどSalesforceで行った設定で全て取得できるようになっているはずです。
では実際に作成してみます。
作成したAmazon Q Businessのアプリケーションの設定画面で、data sourceのメニューからadd data source をクリックします。
検索からSalesforce Onlineのdata sourceを探し、選択します。
Name and description で作成するデータソース名と説明(オプション)を記入します。
Source ではSalesforceのホストURLを入力します。
※ Salesforce Onlineのプロファイルメニューから、Salesforce OnlineのURLをコピーしたやつ
Authorization ではEnable ACLsを選択します。
※ Amazon Q Businessは、エンドユーザーがアクセスできるドキュメントからのみ応答が生成されるように、デフォルトでACL情報をクロールします。
Authentication で AWS Secrets Managerのシークレットを新規作成し、以下の情報を入力します。
- Secret name: シークレットの名前
- Username、Password、Security token、Consumer key、Consumer secret、およびAuthentication URL:Salesforce アカウントで作成した認証クレデンシャルの値を入力します。
Authentication URLはSalesforceの接続アプリケーションでOIDC設定のコールバックURLと同じものを入力します。
IAM role は新規に作成する を選択して、自動的に作ってもらいます。
Sync scope では。Salesforceのどのオブジェクトをクロールするの決めれます。
カスタムオブジェクトもクロールできるので、アプリケーションの仕様に応じて決めていきましょう。
今回の接続では、その他の設定は何も変更しませんでした。
- Maximum file size:Amazon Qがクロールするファイルサイズの上限をMB単位で指定します。 Amazon Qは定義したサイズ制限内のファイルのみをクロールします。 デフォルトのファイルサイズは50MBです。 最大ファイルサイズは0MB以上50MB以下とする。
- Additional configuration:正規表現パターンを追加して、特定のファイルを包含または除外したりできます
Sync modeでは、データソースのコンテンツが変更された際にインデックスを更新する方法を選択します。
- Full sync - 以前の同期ステータスに関係なく、全てのコンテンツを同期します。
- New or modified content sync - 新規および変更されたドキュメントのみを同期します。
- New, modified, or deleted content sync - 新規、変更、削除されたドキュメントのみを同期します。
Sync run scheduleでは、Amazon Qとデータソースを同期する頻度を選択します
Field mappings では、Amazon Q Businessがコンテンツをクロールできるように、データソースからフィールドをマッピングします。 また、カスタムフィールドを追加することもできます。
※ フィールド・マッピングの変更とカスタム・フィールドの追加は、アプリケーションとリトリーバの作成後に利用できるようになります
最後に add data sourceをクリックして作成を完了します。
データ同期を行う
今回はオンデマンドで同期を行う設定にしたので、手動で行ってみます。
作成したデータソースのページからsync nowをクリックします。
接続の設定がただしければ同期が正常終了します。
エラーの場合、メッセージが表示されるので、それに従って一つづつ調べていくしかありません。
シークレットに保存したAuthentication URLに対して以下のページに書かれているリクエストを行なってアクセストークンが帰って来れば、同期も成功するはずです。
Request an Access Token
アプリケーションで動作を確認する
アプリケーションの詳細ページにあるWeb experience settingsのDeployed URLにアクセスします。
ログイン後、アクセスポータルというページにリダイレクトされます。
※ IAM Identity Center認証しています。
作成したAmazon Q Businessのアプリケーションを選択してアクセスします。
このようなチャットアプリです。
Company knowledge` が選択されている状態で質問をすると、データソースを参照して答えが返ってくるようです。
Salesforceのオブジェクトのタイトルに登録されていれば正しい答えをソースの情報とともに返してくれました。
オブジェクトの関連フィールドに関する質問や、全体件数などは答えられなかったです。
Metadata controlsという機能で、Amazon Q Businessインデックスにメタデータを追加してマッピングすることができるので、これを行なったところ、
このようにタイトル以外の属性での質問に対する答えが返ってくるようになりました。
メタデータコントロール機能を使用して、Amazon Q Businessインデックスにメタデータを追加してマッピングすることができます。 メタデータをインデックスフィールドにマッピングすることで、検索精度を高め、エンドユーザーの検索体験をカスタマイズすることができます
今回はAmazon Q Businessの細かな設定までは踏み込めていませんが、色々と調整することができるので今後試していこうと思います。